<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <script>

        // 常见的this指向  --- 常见于函数中
        //    1 普通函数  window
        //    2 事件处理函数
        //    3 对象
        //    4 箭头函数
        //    5 严格模式下  普通函数undefined

        //  如何改变this指向  call / apply / bind
        //    call / apply 直接改变且调用函数
        //         call(新的指向 , 参数1 , 参数2 ..)
        //         apply(新的指向 , [参数1 , 参数2 ..])
        //    bind 只是改变this指向，但默认不会调用函数  



        const obj = {};

        function fn() {
            console.log(this);   // window
        }

        // fn本身是回调函数，将会在1s之后调用，所以我们只需要改变fn中的this指向，而不调用这个函数  bind
        setTimeout(fn , 1000) ;  



        setTimeout(fn.bind(obj) , 1000);

    </script>
    
</body>
</html>